package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"time"
)

// 简单测试请求结构
type QuickTestRequest struct {
	Query string `json:"query"`
}

// 简单测试响应结构
type QuickTestResponse struct {
	Result string `json:"result"`
}

func main() {
	serverURL := "http://localhost:8080"

	// 测试用例
	testQueries := []string{
		"查询用户12345的使用情况",
		"用户67890已使用费用",
		"用户55555的联系方式",
		"今天天气怎么样", // 应该失败
	}

	fmt.Println("🔧 MCP服务器快速测试")
	fmt.Println("===================")
	fmt.Printf("服务器地址: %s\n\n", serverURL)

	for i, query := range testQueries {
		fmt.Printf("[%d/%d] 测试查询: %s\n", i+1, len(testQueries), query)

		if err := testQuery(serverURL, query); err != nil {
			fmt.Printf("❌ 失败: %v\n", err)
		} else {
			fmt.Printf("✅ 成功\n")
		}
		fmt.Println()
	}
}

func testQuery(serverURL, query string) error {
	// 构造请求
	req := QuickTestRequest{Query: query}
	jsonData, err := json.Marshal(req)
	if err != nil {
		return fmt.Errorf("序列化失败: %v", err)
	}

	// 创建HTTP客户端
	client := &http.Client{Timeout: 10 * time.Second}

	// 发送请求
	resp, err := client.Post(
		serverURL+"/mcp/query",
		"application/json",
		bytes.NewBuffer(jsonData),
	)
	if err != nil {
		return fmt.Errorf("请求失败: %v", err)
	}
	defer resp.Body.Close()

	// 读取响应
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return fmt.Errorf("读取响应失败: %v", err)
	}

	fmt.Printf("  响应状态: %s\n", resp.Status)

	if resp.StatusCode == http.StatusOK {
		var result QuickTestResponse
		if err := json.Unmarshal(body, &result); err != nil {
			return fmt.Errorf("解析响应失败: %v", err)
		}
		fmt.Printf("  响应内容: %s\n", result.Result)
	} else {
		fmt.Printf("  错误信息: %s\n", string(body))
	}

	return nil
}
